This disclosure relates to methods and systems for distributing data over wide area networks such as the Internet.
As the need increases to cheaply deliver, with low latency, large quantities of data to a multitude of global recipients over the Internet, improved message delivery methods and systems are desired to fulfill this need. In many distributed applications (such as multiplayer games, social apps, taxi dispatch apps), there is a need to share some common state across multiple users and client devices. Often, this state is kept in “state objects” which must be kept in sync across every device running the application. When any client device updates these state objects, the updates must be synchronized with sub-second latencies across all other devices running the application. This technology requirement is sometimes called “real-time data sync.”
One existing approach for real-time data sync is to maintain a copy of the state objects within a data center in a backend store. This backend store becomes the “system of record” for these state objects.
While this prior approach solves the problem of high-speed synchronization across devices, it does not address several important needs. First, mission critical applications require replication of application state across multiple disparate data centers for redundancy. Second, applications with geographically distributed users require low latency real-time data sync for all their users, not just those users who happen to reside near the data center hosting the backend store. In addition, existing solutions do not automatically synchronize the object state in the client application on a mobile device. Instead, existing solutions expect the application to periodically check or register callbacks to obtain notification of a change.
This document describes method and systems that solve at least some of the problems discussed above.